/*
 * Copyright (C) 2013 Daniel Treffenstädt <daniel@treffenstaedt.de>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 * 02110-1301  USA
 */

#include "OPosition.h"
#include "OSize.h"

O_START_NAMESPACE

Position::Position(unsigned short x, unsigned short y)
{
	m_x		= x;
	m_y		= y;
}

Position::Position()
{
	m_x		= 0;
	m_y		= 0;
}

unsigned short Position::x()
{
	return m_x;
}

unsigned short Position::y()
{
	return m_y;
}

void Position::operator =(Position p)
{
	m_x		= p.x();
	m_y		= p.y();
}

bool Position::operator ==(Position p)
{
	return (x() == p.x() && y() == p.y());
}

bool Position::operator !=(Position p)
{
	return !((*this) == p);
}

bool Position::operator <=(Position p)
{
	return x() <= p.x() && y() <= p.y();
}

bool Position::operator >=(Position p)
{
	return x() >= p.x() && y() >= p.y();
}

bool Position::operator <(Position p)
{
	return x() < p.x() && y() < p.y();
}

bool Position::operator >(Position p)
{
	return x() > p.x() && y() > p.y();
}

void Position::operator +=(Position p)
{
	m_x		+= p.x();
	m_y	+= p.y();
}

void Position::operator -=(Position p)
{
	m_x		-= p.x();
	m_y	-= p.y();
}

Position Position::operator +(Position p)
{
	return Position(m_x + p.x(), m_y + p.y());
}

Position Position::operator -(Position p)
{
	return Position(m_x - p.x(),m_y - p.y());
}

Position Position::operator +(Size s)
{
	return Position(x() + s.width(), y() + s.height());
}

O_END_NAMESPACE
